Qt 学习笔记 9.QTimer

您所在的位置:网站首页 qt 暂停线程 Qt 学习笔记 9.QTimer

Qt 学习笔记 9.QTimer

2024-07-14 06:03| 来源: 网络整理| 查看: 265

1.QThread::msleep() 函数或 QTimer::singleShot() 函数来让程序暂停 使用 QThread::msleep() 函数

QThread::msleep() 函数可以让当前 线程 暂停一段时间。该函数接受一个整数参数(单位为毫秒),表示暂停的时间长度。

以下是使用 QThread::msleep() 函数让程序暂停 1 秒的示例代码:

#include // ... // 暂停1秒 QThread::msleep(1000); 使用 QTimer::singleShot() 函数

QTimer::singleShot() 函数可以让程序在指定时间后执行一个 槽函数。大多数情况下,我们只是想等待一段时间然后执行某些代码,可以使用这个函数来实现。

以下是使用 QTimer::singleShot() 函数让程序暂停1秒的示例代码:

#include // ... // 暂停1秒 QTimer::singleShot(1000, this, []{ // 执行需要暂停的代码 });

在上述代码示例中,我们使用 QTimer::singleShot() 函数让程序在 1 秒后执行一个 Lambda 表达式,其中包含需要暂停的代码。需要注意的是,如果需要在非 UI 线程中使用 QTimer::singleShot() 函数,还需要使用 QEventLoop 让非 UI 线程可以处理 QTimer 事件。

1.1QTimer::singleShot() 函数

QTimer::singleShot() 函数可以用来在指定的时间后执行一个特定的槽函数。该函数是 QTimer 的静态函数,不需要创建 QTimer 对象,通常用于实现延迟执行一些代码的需求。 QTimer::singleShot() 函数的声明如下:

void QTimer::singleShot(int msec, const QObject *receiver, const char *member);

该函数接受三个参数:

msec:指定的延迟时间,单位为毫秒。 receiver:接收到定时器信号后的对象。 member:接收到定时器信号后要执行的槽函数。可以是普通的槽函数或 Lambda 表达式。

QTimer::singleShot() 函数会在经过毫秒数为 msec 的时间后,将一个定时器事件放入事件队列中,然后马上返回。当指定的延迟时间到达时,事件循环将处理该定时器事件,调用接收到定时器信号的对象的指定槽函数。被调用的槽函数可以是 QObject 的任何已声明槽函数或 Lambda 表达式。

以下是一个使用 QTimer::singleShot() 函数延迟执行代码的示例,该示例演示了当按钮被点击时延迟执行一个槽函数的功能:

void MainWindow::on_pushButton_clicked() { QTimer::singleShot(1000, this, [](){ // 延迟1秒执行的槽函数 qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3